home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / hewin / ccisrc / debug.cci < prev    next >
Text File  |  1993-11-30  |  5KB  |  239 lines

  1. /*************************************************************************
  2. *    "debug.cci"
  3. *************************************************************************/
  4.  
  5. #ifdef    _TAROPYON_SYSTEM
  6. int        CCI_dspCciStatus()
  7. {
  8.     char    *dlg;
  9.     int        ch, x, y;
  10.     UINT    ec;
  11.  
  12.     dlg = DLG_msgOpen(DLGPOS_MOS_SET_CENTER,DLGPOS_MOS_SET_CENTER,
  13.         8*32,16*12, C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  14.         "CCI STATUS");
  15.     if ( dlg == NULL )
  16.         return (ERR);
  17.     DLG_msgClear( dlg, C_HWHITE );
  18.     DLG_msgPrintf(dlg, " _heep_max = %8d\r\n", _heep_max );
  19.     DLG_msgPrintf(dlg, " _code_max = %8d\r\n", _code_max );
  20.     DLG_msgPrintf(dlg, "\r\n" );
  21.     DLG_msgPrintf(dlg, " _heep_pos = %8d\r\n", _heep_pos );
  22.     DLG_msgPrintf(dlg, " _base_pos = %8d\r\n", _base_pos );
  23.     DLG_msgPrintf(dlg, " _stak_pos = %8d\r\n", _stak_pos );
  24.     DLG_msgPrintf(dlg, " _code_pos = %8d\r\n", _code_pos );
  25.     DLG_msgPrintf(dlg, " _symb_pos = %8d\r\n", _symb_pos );
  26.     DLG_msgPrintf(dlg, "\r\n" );
  27.  
  28.     while ( 1 )
  29.     {
  30.         ch = EVT_getkey(&ec);
  31.         if ( ch != 0xFFFF || EVT_mos_pget(&x,&y) )
  32.             break;
  33.         EVT_idl();
  34.     }
  35.     DLG_msgClose(dlg);
  36.     EVT_mos_waitBO();
  37.  
  38.     return (NORMAL);
  39. }
  40. #endif
  41.  
  42. #ifdef    _TAROPYON_SYSTEM
  43. int        CCI_printPcbDta()
  44. {
  45.     unsigned int    adr;
  46.  
  47.     adr = PcbDta;
  48.     DLG_tmpMsgBox( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  49.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  50.         "  PCB DTA ADDRESS $%08X  ", adr );
  51.     return (NORMAL);
  52. }
  53. #endif
  54.  
  55. /*************************************************************************
  56. *    子プロセスの実行
  57. *************************************************************************/
  58.  
  59. int        CCI_pclExec(int argc, char **argv)
  60. {
  61.     int        ret;
  62.     char    *fdl;
  63.     char    *fn;
  64.     char    tmp[128];
  65.  
  66.     if ( argc > 1 )
  67.     {
  68.         sprintf( tmp, "%s.", AplGetStartPath() );
  69.         FS_chdrv( toupper(tmp[0]) - 'A' );
  70.         FS_chdir( tmp );
  71.         fn = argv[1];
  72.         ret = NORMAL;
  73.     } else
  74.     {
  75.         if ( (fdl = FDL_open(0)) == NULL )
  76.             return (ERR);
  77.         FDL_set_title( fdl, "CHILD PROCESS LOADER");
  78.         FDL_set_wildcard( fdl, "*.exp");
  79.         if ( FDL_start(fdl) == NORMAL && FS_setFullPathname( tmp, FDL_get_filename(fdl)) == NORMAL )
  80.         {
  81.             ret = NORMAL;
  82.             fn = tmp;
  83.         } else
  84.             ret = ERR;
  85.         FDL_close(fdl);
  86.     }
  87.     if ( ret == NORMAL )
  88.     {
  89.         AplDtaInit();
  90.         DTA_dump( "f:/tmp/dta001.dmp" );
  91.         ret = AplPclExec( fn, 3 );
  92.         DTA_dump( "f:/tmp/dta002.dmp" );
  93.     }
  94.     return (ret);
  95. }
  96.  
  97. /*************************************************************************
  98. *    ネイティブ子プロセスのリンク
  99. *************************************************************************/
  100.  
  101. int        CCI_pclLink(int argc, char **argv)
  102. {
  103.     int        ret;
  104.     char    *fdl;
  105.     char    *fn;
  106.     char    tmp[128];
  107.     UINT    siz;
  108.  
  109.     siz = 0;
  110.     if ( argc > 1 )
  111.     {
  112.         sprintf( tmp, "%s.", AplGetStartPath() );
  113.         FS_chdrv( toupper(tmp[0]) - 'A' );
  114.         FS_chdir( tmp );
  115.         fn = argv[1];
  116.         if ( argc > 2 )
  117.             siz  = atoi(argv[2]) * 1024;
  118.         ret = NORMAL;
  119.     } else
  120.     {
  121.         if ( (fdl = FDL_open(0)) == NULL )
  122.             return (ERR);
  123.         FDL_set_title( fdl, "CHILD PROCESS LOADER");
  124.         FDL_set_wildcard( fdl, "*.exp");
  125.         if ( FDL_start(fdl) == NORMAL && FS_setFullPathname( tmp, FDL_get_filename(fdl)) == NORMAL )
  126.         {
  127.             ret = NORMAL;
  128.             fn = tmp;
  129.         } else
  130.             ret = ERR;
  131.         FDL_close(fdl);
  132.     }
  133.     if ( ret == NORMAL )
  134.     {
  135.         if ( siz ==0 )
  136.         siz =  1*1024*1024;    /* 1M */
  137.         ret = AplPclLink( fn, siz );
  138.     }
  139.     return (ret);
  140. }
  141.  
  142. #ifdef    _CCISRC_EXTRACT
  143. /*************************************************************************
  144. *    CCI プログラムのソースリストを解凍する
  145. *************************************************************************/
  146.  
  147. int        CCI_extractHewinCci()
  148. {
  149.     int        drv, i, j;
  150.     char    dir[128], path[128], buf[128];
  151.     char    *fp;
  152.  
  153.     sprintf( dir, "%s%s", AplGetStartPath(), "ccisrc");
  154.     drv = toupper(dir[0]) - 'A';
  155.     FS_chdrv( drv );
  156.     FS_chdir( dir );
  157.  
  158.     sprintf( path,"%s%s", dir, "\\hewincci.exe");
  159.     if ( (fp = FM_fopen(path,"r")) == NULL )
  160.     {
  161.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  162.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  163.             4, "HEWINCCI.EXE : がありません。" );
  164.         return (ERR);
  165.     }
  166.     FM_fclose(fp);
  167.  
  168.     sprintf( buf, "\\k%04X%c:\\rcd ",  KA_PF2|KA_BIT_CTRL, drv + 'A' );
  169.     i = strlen(buf);
  170.     j = 0;
  171.     while ( dir[j] )
  172.     {    if ( dir[j] == '\\' )
  173.         {    buf[i] = '\\';    ++i;
  174.             buf[i] = 'x';    ++i;
  175.             buf[i] = '5';    ++i;
  176.             buf[i] = 'c';    ++i;
  177.             ++j;
  178.         } else
  179.         {    buf[i] = dir[j];    ++i;
  180.             ++j;
  181.         }
  182.     }
  183.     strcpy( buf + i, "\\rhewincci\\r");
  184.  
  185.     SendKeyBoardLog( buf );
  186.     PlayKeyBoardLog();
  187.     return (ERR);
  188. }
  189. #endif
  190.  
  191. /*************************************************************************
  192. *    アイドリング処理の一覧を表示(デバッグ用)
  193. *************************************************************************/
  194.  
  195. int        CCI_idlFuncList()
  196. {
  197.     AplIdlingFuncList();
  198.     return (NORMAL);
  199. }
  200.  
  201.  
  202. #if    0
  203. #ifdef    _TAROPYON_SYSTEM
  204. int        CCI_checkMaxAlloc()
  205. {
  206.     unsigned int    siz;
  207.     char            *ptr;
  208.     char            tmp[64];
  209.  
  210.     siz = 8 * 1024 * 1024;
  211.  
  212.     do
  213.     {
  214.         if ( (ptr = malloc(siz)) == NULL )
  215.         {
  216.             if ( siz < 256 )
  217.                 break;
  218.             if ( siz > 4 * 1024 * 1024 )
  219.                 siz -= 1024 * 1024;
  220.             else if ( siz > 2 * 1024 * 1024 )
  221.                 siz -= 64 * 1024;
  222.             else if ( siz > 1024 * 1024 )
  223.                 siz -= 4 * 1024;
  224.         }
  225.     } while ( ptr == NULL );
  226.  
  227.     if ( ptr )
  228.         free(ptr);
  229.     else
  230.         siz = 0;
  231.  
  232.     DLG_tmpMsgBox( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  233.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  234.         "  Max alloc size  %s byte(s)  ", GetSizeStr(siz,tmp) );
  235.     return (NORMAL);
  236. }
  237. #endif
  238. #endif
  239.